Category searching

ABSTRACT

Performing a category search to identify categories of web sites that relate to a search term includes receiving at least one search term that then is compared with a hierarchy of category identifiers, and with terms related to one or more categories, to determine whether matches exist. A category identifier is selected based on the matches that are determined to exist within the hierarchy and the terms, and at least the category identifier is displayed. Performing a search to identify web sites and categories of web sites that relate to a search term also may include receiving at least one search term that then is compared with a list of recommended web sites, previously performed searches, a hierarchy of category identifiers, and terms related to one or more categories to determine whether matches exist. Results based on matches that are determined to exist are displayed.

This application is a continuation of U.S. patent application Ser. No.11/265,800, filed Nov. 1, 2005 and entitled “CATEGORY SEARCHING,” whichis a continuation of U.S. patent application Ser. No. 09/749,639, filedDec. 28, 2000 and entitled “CATEGORY SEARCHING,” which claims priorityfrom U.S. Provisional Application No. 60/223,695, filed Aug. 8, 2000.The entire content of the prior applications is incorporated herein byreference.

TECHNICAL FIELD

This invention relates to searching systems and processes, and moreparticularly to category searching.

BACKGROUND

With the explosion of information on the Internet, it has becomeincreasingly difficult to conduct a search on the Internet that returnsresults in a manner and a format that are useful to the personconducting the search. Frequently, when a search is performed, the mostuseful and relevant results may be scattered and buried among thousandsof results.

In other instances, when a search is performed on the Internet, a searchmay yield few or no results even though relevant results exist on theInternet. Few or no results may occur because the Internet sites and theweb pages within Internet sites that contain the desired results may notbe searchable.

SUMMARY

In one general aspect, performing a category search to identifycategories of web sites that relate to a search term includes receivingat least one search term that then is compared with a hierarchy ofcategory identifiers, and with terms related to one or more categories,to determine whether matches exist. A category identifier is selectedbased on the matches that are determined to exist within the hierarchyand the terms, and at least the category identifier is displayed.

Embodiments may include one or more of the following features. Forexample, several search terms may be received and grouped as a singlestring by default. The terms related to one or more categories mayinclude a name and a description of a website corresponding to acategory. The hierarchy of category identifiers may include an orderedlist of category names arranged in order from broad categories to narrowcategories, with the narrowest category being a final category name.

Several category identifiers may be displayed. A category identifierselected based on the matches that are determined to exist within thehierarchy and the terms may be communicated.

Additionally, the category identifiers may be ranked based on a numberof the matches that are determined to exist and at least one of alocation and a type of the match. For example, ranking the categoryidentifiers may be based on the relative location of the matches withinthe hierarchy of category identifiers, and on whether the matches occurwithin the terms related to one or more categories, the hierarchy ofcategory identifiers, or both, Category identifiers that include matchesthat occur within both the hierarchy of category identifiers and theterms related to one or more categories may be ranked higher thancategory identifiers that include matches that occur within only one ofthe hierarchy of category identifiers and the terms related to one ormore categories.

Additionally or alternatively, category identifiers that include matchesthat occur only within the hierarchy of category identifiers may beranked higher than category identifiers that include matches that occurwithin the terms related to one or more categories. Matches that occurwithin the final category name may be ranked higher than matches thatoccur for category names at a location other than the final categoryname.

In another general aspect, performing a search to identify web sites andcategories of web sites that relate to a search term may includereceiving at least one search term that then is compared with a list ofrecommended web sites, previously performed searches, a hierarchy ofcategory identifiers, and terms related to one or more categories todetermine whether matches exist. Results based on matches that aredetermined to exist are displayed.

Embodiments may include one or more of the following features. Forexample, the search term also may be compared with an electronicinformation store that includes full text of different web pages fromdifferent web sites to determine whether matches exist.

Several search terms may be received and grouped as a single string bydefault. The displaying of results may include displaying a list ofrecommended sites, a list of related searches, a list of categoryidentifiers, and a list of website identifiers.

The search may further include conducting a World Wide Web search usingthe search term when less than a threshold number of matches occur. Thesearch also may include conducting a search of an electronic informationstore that includes full text of proprietary content.

These general and specific aspects may be implemented using a system, amethod, or a computer program, or any combination of systems, methods,and computer programs.

Other features and advantages will be apparent from the description anddrawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram of a communications system.

FIGS. 2-6 are expansions of the block diagram of FIG. 1.

FIG. 7 is a flowchart of a process for performing an electronic search,which may be performed by components of the systems shown in FIGS. 1-6.

FIG. 8 a is a flowchart of a process for performing a category search aspart of the process of FIG. 7.

FIG. 8 b is an exemplary screen shot that shows the results of thecategory search performed in FIG. 8 a.

FIG. 8 c is an exemplary screen shot that shows more detailed results ofthe category search performed in FIG. 8 a.

FIG. 9 a is a flowchart of a process for performing a web site search aspart of the process of FIG. 7.

FIG. 9 b is a flowchart of a process for searching different data storesas part of the process of FIG. 9 a.

FIG. 9 c is a block diagram of a system for storing searchable content.

FIG. 9 d is a flowchart of a process for populating electronicinformation stores.

FIG. 9 e is an exemplary screen shot that shows the results of the website search.

FIG. 10 a is a flowchart of a process for displaying search results aspart of the process of FIG. 7.

FIG. 10 b is an exemplary screen shot that shows the displayed searchresults.

FIG. 10 c is an exemplary screen shot that shows matching web pageresults.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

For illustrative purposes, FIGS. 1-6 describe a communications systemfor implementing techniques for transferring files between subscribersof an instant messaging host complex. For brevity, several elements inthe figures described below are represented as monolithic entities.However, as would be understood by one skilled in the art, theseelements each may include numerous interconnected computers andcomponents designed to perform a set of specified operations and/ordedicated to a particular geographical region.

Referring to FIG. 1, a communications system 100 is capable ofdelivering and exchanging data between a client system 105 and a hostsystem 110 through a communications link 115. The client system 105typically includes one or more client devices 120 and/or clientcontrollers 125, and the host system 110 typically includes one or morehost devices 135 and/or host controllers 140. For example, the clientsystem 105 or the host system 110 may include one or moregeneral-purpose computers (e.g., personal computers), one or morespecial-purpose computers (e.g., devices specifically programmed tocommunicate with each other and/or the client system 105 or the hostsystem 110), or a combination of one or more general-purpose computersand one or more special-purpose computers. The client system 105 and thehost system 110 may be arranged to operate within or in concert with oneor more other systems, such as, for example, one or more LANs (“LocalArea Networks”) and/or one or more WANs (“Wide Area Networks”).

The client device 120 (or the host controller 135) is generally capableof executing instructions under the command of a client controller 125(or a host controller 140). The client device 120 (or the host device135) is connected to the client controller 125 (or the host controller140) by a wired or wireless data pathway 130 or 145 capable ofdelivering data.

The client device 120, the client controller 125, the host device 135,and the host controller 140 each typically include one or more hardwarecomponents and/or software components. An example of a client device 120or a host device 135 is a general-purpose computer (e.g., a personalcomputer) capable of responding to and executing instructions in adefined manner. Other examples include a special-purpose computer, aworkstation, a server, a device, a component, other physical or virtualequipment or some combination thereof capable of responding to andexecuting instructions.

An example of client controller 125 or a host controller 140 is asoftware application loaded on the client device 120 or the host device135 for commanding and directing communications enabled by the clientdevice 120 or the host device 135. Other examples include a program, apiece of code, an instruction, a device, a computer, a computer system,or a combination thereof, for independently or collectively instructingthe client device 120 or the host device 135 to interact and operate asdescribed. The client controller 125 and the host controller 140 may beembodied permanently or temporarily in any type of machine, component,physical or virtual equipment, storage medium, or propagated signalcapable of providing instructions to the client device 120 or the hostdevice 135.

The communications link 115 typically includes a delivery network 160making a direct or indirect communication between the client system 105and the host system 110, irrespective of physical separation. Examplesof a delivery network 160 include the Internet, the World Wide Web,WANs, LANs, analog or digital wired and wireless telephone networks(e.g. PSTN, ISDN, and xDSL), radio, television, cable, satellite, and/orany other delivery mechanism for carrying data. The communications link115 may include communication pathways 150, 155 that enablecommunications through the one or more delivery networks 160 describedabove. Each of the communication pathways 150, 155 may include, forexample, a wired, wireless, cable or satellite communication pathway.

FIG. 2 illustrates a communication system 200 including a client system205 communicating with a host system 210 through a communications link215. Client system 205 typically includes one or more client devices 220and one or more client controllers 225 for controlling the clientdevices 220. Host system 210 typically includes one or more host devices235 and one or more host controllers 240 for controlling the hostdevices 235. The communications link 215 may include communicationpathways 250, 255 enabling communications through the one or moredelivery networks 260.

Examples of each element within the communication system of FIG. 2 arebroadly described above with respect to FIG. 1. In particular, the hostsystem 210 and the communications link 215 typically have attributescomparable to those described with respect to the host system 110 andthe communications link 115 of FIG. 1, respectively. Likewise, theclient system 205 of FIG. 2 typically has attributes comparable to andmay illustrate one possible embodiment of the client system 105 of FIG.1.

The client device 220 typically includes a general purpose computer 270having an internal or external storage 272 for storing data and programssuch as an operating system 274 (e.g., DOS, Windows™, Windows 95™,Windows 98™, Windows 2000™, Windows NT™, OS/2, and Linux) and one ormore application programs. Examples of application programs includeauthoring applications 276 (e.g., word processing, database programs,spreadsheet programs, and graphics programs) capable of generatingdocuments or other electronic content; client applications 278 (e.g.,AOL client, CompuServe client, AIM client, AOL TV client, and ISPclient) capable of communicating with other computer users, accessingvarious computer resources, and viewing, creating, or otherwisemanipulating electronic content; and browser applications 280 (e.g.,Netscape's Navigator and Microsoft's Internet Explorer) capable ofrendering standard Internet content.

The general-purpose computer 270 also includes a central processing unit282 (CPU) for executing instructions in response to commands from theclient controller 225. In one implementation, the client controller 225includes one or more of the application programs installed on theinternal or external storage 272 of the general-purpose computer 270. Inanother implementation, the client controller 225 includes applicationprograms externally stored in and executed by one or more device(s)external to the general-purpose computer 270.

The general-purpose computer typically will include a communicationdevice 284 for sending and receiving data. One example of thecommunication device 284 is a modem. Other examples include atransceiver, a set-top box, a communication card, a satellite dish, anantenna, or another network adapter capable of transmitting andreceiving data over the communications link 215 through a wired orwireless data pathway 250. The general-purpose computer 270 also mayinclude a TV (“television”) tuner 286 for receiving televisionprogramming in the form of broadcast, satellite, and/or cable TVsignals. As a result, the client device 220 can selectively and/orsimultaneously display network content received by communications device284 and television programming content received by the TV tuner 286.

The general-purpose computer 270 typically will include an input/outputinterface 288 to enable a wired or wireless connection to variousperipheral devices 290. Examples of peripheral devices 290 include, butare not limited to, a mouse 291, a mobile phone 292, a personal digitalassistant 293 (PDA), a keyboard 294, a display monitor 295 with orwithout a touch screen input, and/or a TV remote control 296 forreceiving information from and rendering information to subscribers.Other examples may include voice recognition and synthesis devices.

Although FIG. 2 illustrates devices such as a mobile telephone 292, aPDA 293, and a TV remote control 296 as being peripheral with respect tothe general-purpose computer 270, in another implementation, suchdevices may themselves include the functionality of the general-purposecomputer 270 and operate as the client device 220. For example, themobile phone 292 or the PDA 293 may include computing and networkingcapabilities, and may function as a client device 220 by accessing thedelivery network 260 and communicating with the host system 210.Furthermore, the client system 205 may include one, some or all of thecomponents and devices described above.

Referring to FIG. 3, a communications system 300 is capable ofdelivering and exchanging information between a client system 305 and ahost system 310 through a communication link 315. Client system 305typically includes one or more client devices 320 and one or more clientcontrollers 325 for controlling the client devices 320. Host system 310typically includes one or more host devices 335 and one or more hostcontrollers 340 for controlling the host devices 335. The communicationslink 315 may include communication pathways 350, 355 enablingcommunications through the one or more delivery networks 360.

Examples of each element within the communication system of FIG. 3 arebroadly described above with respect to FIGS. 1 and 2. In particular,the client system 305 and the communications link 315 typically haveattributes comparable to those described with respect to client systems105 and 205 and communications links 115 and 215 of FIGS. 1 and 2.Likewise, the host system 310 of FIG. 3 may have attributes comparableto and may illustrate one possible embodiment of the host systems 110and 210 shown in FIGS. 1 and 2.

The host system 310 includes a host device 335 and a host controller340. The host controller 340 is generally capable of transmittinginstructions to any or all of the elements of the host device 335. Forexample, in one implementation, the host controller 340 includes one ormore software applications loaded on the host device 335. However, inother implementations, as described above, the host controller 340 mayinclude any of several other programs, machines, and devices operatingindependently or collectively to control the host device 335.

The host device 335 includes a login server 370 for enabling access bysubscribers and routing communications between the client system 305 andother elements of the host device 335. The host device 335 also includesvarious host complexes such as the depicted OSP (“Online ServiceProvider”) host complex 380 and IM (“Instant Messaging”) host complex390. To enable access to these host complexes by subscribers, the clientsystem 305 may include communication software, for example, an OSPclient application and an IM client application. The OSP and IMcommunication software applications are designed to facilitate thesubscriber's interactions with the respective services and, inparticular, may provide access to all the services available within therespective host complexes. For example, Instant Messaging allows asubscriber to use the IM client application to view whether particularsubscribers (“buddies”) are online, exchange instant messages withparticular subscribers, participate in group chat rooms, trade filessuch as pictures, invitations or documents, find other subscribers withsimilar interests, get customized news and stock quotes, and search theWeb.

Typically, the OSP host complex 380 supports different services, such asemail, discussion groups, chat, news services, and Internet access. TheOSP host complex 380 is generally designed with an architecture thatenables the machines within the OSP host complex 380 to communicate witheach other, certain protocols (i.e., standards, formats, conventions,rules, and structures) being employed to enable the transfer of data.The OSP host complex 380 ordinarily employs one or more OSP protocolsand custom dialing engines to enable access by selected clientapplications. The OSP host complex 380 may define one or more specificprotocols for each service based on a common, underlying proprietaryprotocol.

The IM host complex 390 is generally independent of the OSP host complex380, and supports instant messaging services irrespective of asubscriber's network or Internet access.

Thus, the IM host complex 390 allows subscribers to send and receiveinstant messages, whether or not they have access to any particular ISP.The IM host complex 390 may support associated services, such asadministrative matters, advertising, directory services, chat, andinterest groups related to the instant messaging. The IM host complex390 has an architecture that enables all of the machines within the IMhost complex to communicate with each other. To transfer data, the IMhost complex 390 employs one or more standard or exclusive IM protocols.

The host device 335 may include one or more gateways that connect andtherefore link complexes, such as the OSP host complex gateway 385 andthe IP host complex gateway 395. The OSP host complex gateway 385 andthe IM host complex 395 gateway may directly or indirectly link the OSPhost complex 380 with the IM host complex 390 through a wired orwireless pathway. Ordinarily, when used to facilitate a link betweencomplexes, the OSP host complex gateway 385 and the IM host complexgateway 395 are privy to information regarding a protocol anticipated bya destination complex, which enables any necessary protocol conversionto be performed incident to the transfer of data from one complex toanother. For instance, the OSP host complex 380 and IM host complex 390may use different protocols such that transferring data between thecomplexes requires protocol conversion by or at the request of the OSPhost complex gateway 385 and/or the IM host complex gateway 395.

Referring to FIG. 4, a communications system 400 is capable ofdelivering and exchanging information between a client system 405 and ahost system 410 through a communication link 415. Client system 405typically includes one or more client devices 420 and one or more clientcontrollers 425 for controlling the client devices 420. Host system 410typically includes one or more host devices 435 and one or more hostcontrollers 440 for controlling the host devices 435. The communicationslink 415 may include communication pathways 450, 455 enablingcommunications through the one or more delivery networks 460. As shown,the client system 405 may access the Internet 465 through the hostsystem 410.

Examples of each element within the communication system of FIG. 4 arebroadly described above with respect to FIGS. 1-3. In particular, theclient system 405 and the communications link 415 typically haveattributes comparable to those described with respect to client systems105, 205, and 305 and communications links 115, 215, and 315 of FIGS.1-3. Likewise, the host system 410 of FIG. 4 may have attributescomparable to and may illustrate one possible embodiment of the hostsystems 110, 210, and 310 shown in FIGS. 1-3. FIG. 4 describes an aspectof the host system 410, focusing primarily on one particularimplementation of OSP host complex 480.

The client system 405 includes a client device 420 and a clientcontroller 425. The client controller 425 is generally capable ofestablishing a connection to the host system 410, including the OSP hostcomplex 480, the IM host complex 490 and/or the Internet 465. In oneimplementation, the client controller 425 includes an OSP applicationfor communicating with servers in the OSP host complex 480 using OSPprotocols that may or may not be exclusive or proprietary. The clientcontroller 425 also may include applications, such as an IM clientapplication and/or an Internet browser application, for communicatingwith the IM host complex 490 and the Internet 465.

The host system 410 includes a host device 435 and a host controller440. The host controller 440 is generally capable of transmittinginstructions to any or all of the elements of the host device 435. Forexample, in one implementation, the host controller 440 includes one ormore software applications loaded on one or more elements of the hostdevice 435. In other implementations, as described above, the hostcontroller 440 may include any of several other programs, machines, anddevices operating independently or collectively to control the hostdevice 435.

The host device 435 includes a login server 470 capable of enablingcommunications between client systems 405 and various elements of thehost system 410, including elements such as OSP host complex 480 and IMhost complex 490. The login server 470 may implement one or moreauthorization procedures to enable simultaneous access to one or more ofthese elements.

The OSP host complex 480 and the IM host complex 490 are typicallyconnected through one or more OSP host complex gateways 485 and one ormore IM host complex gateways 495. Each OSP host complex gateway 485 andIM host complex gateway 495 may generally perform protocol conversionsnecessary to enable communication between one or more of the OSP hostcomplex 480, the IM host complex 490, and the Internet 465.

The OSP host complex 480 supports a set of services to be accessedthrough and/or performed by from one or more servers located internal toand external from the OSP host complex 480. Servers external to the OSPhost complex 480 may communicate using the Internet 465. Serversinternal to the OSP complex 480 may be arranged in one or moreconfigurations. For example, servers may be arranged in largecentralized clusters identified as farms 4802 or in localized clustersidentified as pods 4804.

More specifically, farms 4802 are groups of servers located atcentralized locations within the OSP host complex 480. Farms 4802generally are dedicated to providing particular functionality andservices to subscribers and clients from a centralized location,regardless of the location of the subscriber or client. Farms 4802 areparticularly useful for providing services that depend upon otherremotely-located or performed processes and services for information,such as, for example, chat, email, instant messaging, news, newsgroups,search, stock updates, and weather, Thus, farms 4802 tend to rely onconnections with external resources such as the Internet 465 and/orother servers within the OSP host complex 480.

By contrast to farms 4802, pods 4804 are clusters of localized serversthat provide some services offered by the OSP host complex 480 from alocation local to the service or information recipient, which reducesand avoids time delays and congestion inherent in centralizedprocessing. Each pod 4804 includes one or more interrelated serverscapable of operating together to provide one or more services offered bythe OSP host complex 480 in a geographically localized manner, with theservers of a pod 4804 generally operating independently of resourcesexternal to the pod 4804. A pod 4804 may cache content received fromexternal sources, such as farms 4802 or the Internet 465, makingfrequently requested information readily available to the local serviceor information recipients served by the pod 4804. In this way, pods 4804are particularly useful in providing services that are independent ofother processes and servers such as, for example, routing to otherlocalized resources or recipients, providing access to keywords andgeographically specific content, providing access to routinely accessedinformation, and downloading certain software and graphical interfaceupdates with reduced processing time and congestion. The determinationof which servers and processes are located in the pod 4804 is made bythe OSP according to load distribution, frequency of requests,demographics, and other factors.

In addition to farms 4802 and pods 4804, the implementation of FIG. 4also includes one or more non-podded and non-farmed servers 4806. Ingeneral, the servers 4806 may be dedicated to performing a particularservice or information that relies on other processes and services forinformation and may be directly or indirectly connected to resourcesoutside of the OSP host complex 480, such as the Internet 465 and the IMhost complex 490, through an OSP gateway 4808 within OSP host complexgateway 485. In the event that subscriber usage of a particular serviceor information of the servers 4806 becomes relatively high, thoseservers 4806 may be integrated into a farm or pod, as appropriate.

In the implementation of FIG. 4, one particular exemplary pod 4810 isshown in more detail. Pod 4810 includes a routing processor 4812. In apacket-based implementation, the client system 405 may generateinformation requests, convert the requests into data packets, sequencethe data packets, perform error checking and other packet-switchingtechniques, and transmit the data packets to the routing processor 4812.Upon receiving data packets from the client system 405, the routingprocessor 4812 may directly or indirectly route the data packets to aspecified destination within or outside of the OSP host complex 480. Ingeneral, the routing processor 4812 will examine an address field of adata request, use a mapping table to determine the appropriatedestination for the data request, and direct the data request to theappropriate destination.

For example, in the event that a data request from the client system 405can be satisfied locally, the routing processor 4812 may direct the datarequest to a local server 4814 in the pod 4810. In the event that thedata request cannot be satisfied locally, the routing processor 4812 maydirect the data request internally to one or more farms 4802, one ormore other pods 4804, or one or more non-podded servers 4806 in the OSPhost complex 480, or the routing processor 4812 may direct the datarequest externally to elements such as the IM host complex 490 throughan OSP/pod gateway 4816.

The routing processor 4812 also may direct data requests and/orotherwise facilitate communication between the client system 405 and theInternet 465 through the OSP/pod gateway 4816. In one implementation,the client system 405 uses an OSP client application to convert standardInternet content and protocols into OSP protocols and vice versa, wherenecessary. For example, when a browser application transmits a requestin a standard Internet protocol, the OSP client application canintercept the request, convert the request into an OSP protocol and sendthe converted request to the routing processor 4812 in the OSP hostcomplex 480. The routing processor 4812 recognizes the Internet 465 asthe destination and routes the data packets to an IP (“InternetProtocol”) tunnel 4818. The IP tunnel 4818 converts the data from theOSP protocol back into standard Internet protocol and transmits the datato the Internet 465. The IP tunnel 4818 also converts the data receivedfrom the Internet in the standard Internet protocol back into the OSPprotocol and sends the data to the routing processor 4812 for deliveryback to the client system 405. At the client system 405, the OSP clientapplication converts the data in the OSP protocol back into standardInternet content for communication with the browser application.

The IP tunnel 4818 may act as a buffer between the client system 405 andthe Internet 465, and may implement content filtering and time savingtechniques. For example, the IP tunnel 4818 can check parental controlssettings of the client system 405 and request and transmit content fromthe Internet 465 according to the parental control settings. Inaddition, the IP tunnel 4818 may include a number a caches for storingfrequently accessed information. If requested data is determined to bestored in the caches, the IP tunnel 4818 may send the information to theclient system 405 from the caches and avoid the need to access theInternet 465.

In another implementation, the client system 405 may use standardInternet protocols and formatting to access pods 4810 and the Internet465. For example, the subscriber can use an OSP TV client applicationhaving an embedded browser application installed on the client system405 to generate a request in standard Internet protocol, such as HTTP(“HyperText Transport Protocol”). In a packet-based implementation, datapackets may be encapsulated inside a standard Internet tunnelingprotocol, such as, for example, UDP (“User Datagram Protocol”), androuted to a web tunnel 4820. The web tunnel 4820 may be a L2TP (“LayerTwo Tunneling Protocol”) tunnel capable of establishing a point-to-pointprotocol (PPP) session with the client system 405. The web tunnel 4820provides a gateway to the routing processor 4812 within the pod 4810,the Internet 465, and a web proxy 4822.

The web proxy 4822 can look up subscriber information from the IPaddress of the client system 405 to determine demographic informationsuch as the subscriber's parental control settings. In this way, the webproxy 4822 can tailor the subscriber's content and user interfaces. Theweb proxy 4822 can also perform caching functions to store certain URLs(“Uniform Resource Locators”) and other electronic content so that theweb proxy 4822 can locally deliver information to the client system 405and avoid the need to access the Internet 465 in the event that datarequested by the client system 405 has been cached.

Referring to FIG. 5, a communications system 500 is capable ofdelivering and exchanging information between a client system 505 and ahost system 510 through a communication link 515. Client system 505typically includes one or more client devices 520 and one or more clientcontrollers 525 for controlling the client devices 520. Host system 510typically includes one or more host devices 535 and one or more hostcontrollers 540 for controlling the host devices 535. The communicationslink 515 may include communication pathways 550, 555 enablingcommunications through the one or more delivery networks 560. As shown,the client system 505 may access the Internet 565 through the hostsystem 510.

Examples of each element within the communication system of FIG. 5 arebroadly described above with respect to FIGS. 1-4. In particular, theclient system 505 and the communications link 515 typically haveattributes comparable to those described with respect to client systems105, 205, 305, and 405 and communications links 115, 215, 315, and 415of FIGS. 1-4. Likewise, the host system 510 of FIG. 5 may haveattributes comparable to and may illustrate one possible embodiment ofthe host systems 110, 210, 310, and 410 shown in FIGS. 1-4. FIG. 5describes an aspect of the host system 510, focusing primarily on oneparticular implementation of IM host complex 590.

The client system 505 includes a client device 520 and a clientcontroller 525. The client controller 525 is generally capable ofestablishing a connection to the host system 510, including the OSP hostcomplex 580, the IM host complex 590 and/or the Internet 565. In oneimplementation, the client controller 525 includes an IM application forcommunicating with servers in the IM host complex 590 using exclusive IMprotocols. The client controller 525 also may include applications, suchas an OSP client application and/or an Internet browser application, forcommunicating with elements such as the OSP host complex 580 and theInternet 565.

The host system 510 includes a host device 535 and a host controller540. The host controller 540 is generally capable of transmittinginstructions to any or all of the elements of the host device 535. Forexample, in one implementation, the host controller 540 includes one ormore software applications loaded on one or more elements of the hostdevice 535. In other implementations, as described above, the hostcontroller 540 may include any of several other programs, machines, anddevices operating independently or collectively to control the hostdevice 535.

The host system 510 includes a login server 570 capable of enablingcommunications between client systems 505 and various elements of thehost system 510, including elements such as the OSP host complex 580 andIM host complex 590; login server 570 is also capable of authorizingaccess by the client system 505 and those elements. The login server 570may implement one or more authorization procedures to enablesimultaneous access to one or more of the elements. The OSP host complex580 and the IM host complex 590 are connected through one or more hostcomplex gateways 585 and one or more IM host complex gateways 595. EachOSP host complex gateway 585 and IM host complex gateway 595 may performany protocol conversions necessary to enable communication between theOSP host complex 580, the IM host complex 590, and the Internet 565.

To access the IM host complex 590 to begin an instant messaging session,the client system 505 establishes a connection to the login server 570.The login server 570 typically determines whether the particularsubscriber is authorized to access the IM host complex 590 by verifyinga subscriber identification and password. If the subscriber isauthorized to access the IM host complex 590, the login server 570employs a hashing technique on the subscriber's screen name to identifya particular IM server 5902 for use during the subscriber's session. Thelogin server 570 provides the client system 505 with the IP address ofthe particular IM server 5902, gives the client system 505 an encryptedkey (i.e., a cookie), and breaks the connection. The client system 505then uses the IP address to establish a connection to the particular IMserver 5902 through the communications link 515, and obtains access tothat IM server 5902 using the encrypted key. Typically, the clientsystem 505 will be equipped with a winsock API (“Application ProgrammingInterface”) that enables the client system 505 to establish an open TCPconnection to the IM server 5902.

Once a connection to the IM server 5902 has been established, the clientsystem 505 may directly or indirectly transmit data to and accesscontent from the IM server 5902 and one or more associated domainservers 5904. The IM server 5902 supports the fundamental instantmessaging services and the domain servers 5904 may support associatedservices, such as, for example, administrative matters, directoryservices, chat and interest groups. The domain servers 5904 can be usedto lighten the load placed on the IM server 5902 by assumingresponsibility for some of the services within the IM host complex 590.By accessing the IM server 5902 and/or the domain server 5904, asubscriber can use the IM client application to view whether particularsubscribers (“buddies”) are online, exchange instant messages withparticular subscribers, participate in group chat rooms, trade filessuch as pictures, invitations or documents, find other subscribers withsimilar interests, get customized news and stock quotes, and search theWeb.

In the implementation of FIG. 5, IM server 5902 is directly orindirectly connected to a routing gateway 5906. The routing gateway 5906facilitates the connection between the IM server 5902 and one or morealert multiplexors 5908. For example, routing gateway 5906 may serve asa link minimization tool or hub to connect several IM servers 5902 toseveral alert multiplexors 5908. In general, an alert multiplexor 5908maintains a record of alerts and subscribers registered to receive thealerts.

Once the client system 505 is connected to the alert multiplexor 5908, asubscriber can register for and/or receive one or more types of alerts.The connection pathway between the client system 505 and the alertmultiplexor 5908 is determined by employing a hashing technique at theIM server 5902 to identify the particular alert multiplexor 5908 to beused for the subscriber's session. Once the particular multiplexor 5908has been identified, the IM server 5902 provides the client system 505with the IP address of the particular alert multiplexor 5908 and givesthe client system 505 an encrypted key (i.e., a cookie) used to gainaccess to the identified multiplexor 5908. The client system 505 thenuses the IP address to connect to the particular alert multiplexor 5908through the communication link 515 and obtains access to the alertmultiplexor 5908 using the encrypted key.

The alert multiplexor 5908 is connected to an alert gate 5910 that, likethe IM host complex gateway 595, is capable of performing the necessaryprotocol conversions to enable communication with the OSP host complex580. The alert gate 5910 is the interface between the IM host complex590 and the physical servers, such as servers in the OSP host complex580, where state changes are occurring. In general, the informationregarding state changes will be gathered and used by the IM host complex590. The alert multiplexor 5908 also may communicate with the OSP hostcomplex 580 through the IM gateway 595, for example, to provide theservers and subscribers of the OSP host complex 580 with certaininformation gathered from the alert gate 5910.

The alert gate 5910 can detect an alert feed corresponding to aparticular type of alert. The alert gate 5910 may include a piece ofcode (alert receive code) capable of interacting with another piece ofcode (alert broadcast code) on the physical server where a state changeoccurs. In general, the alert receive code installed on the alert gate5910 instructs the alert broadcast code installed on the physical serverto send an alert feed to the alert gate 5910 upon the occurrence of aparticular state change. Thereafter, upon detecting an alert feed, thealert gate 5910 contacts the alert multiplexor 5908, which in turn,informs the appropriate client system 505 of the detected alert feed.

In the implementation of FIG. 5, the IM host complex 590 also includes asubscriber profile server 5912 connected to a database 5914 for storinglarge amounts of subscriber profile data. The subscriber profile server5912 may be used to enter, retrieve, edit, manipulate, or otherwiseprocess subscriber profile data. In one implementation, a subscriber'sprofile data includes, for example, the subscriber's buddy list, alertpreferences, designated stocks, identified interests, geographiclocation and other demographic data. The subscriber may enter, editand/or delete profile data using an installed IM client application onthe client system 505 to interact with the subscriber profile server5912.

Because the subscriber's data is stored in the IM host complex 590, thesubscriber does not have to reenter or update such information in theevent that the subscriber accesses the IM host complex 590 using a newor different client system 505. Accordingly, when a subscriber accessesthe IM host complex 590, the IM server 5902 can instruct the subscriberprofile server 5912 to retrieve the subscriber's profile data from thedatabase 5914 and to provide, for example, the subscriber's buddy listto the IM server 5902 and the subscriber's alert preferences to thealert multiplexor 5908. The subscriber profile server 5912 also maycommunicate with other servers in the OSP host complex 590 to sharesubscriber profile data with other services. Alternatively, user profiledata may be saved locally on the client device 505.

Referring to FIG. 6, a communications system 600 is capable ofdelivering and exchanging information between a client system 605 and ahost system 610 through a communication link 615. Client system 605typically includes one or more client devices 620 and one or more clientcontrollers 625 for controlling the client devices 620. Host system 610typically includes one or more host devices 635 and one or more hostcontrollers 640 for controlling the host devices 635. The communicationslink 615 may include communication pathways 650, 655 enablingcommunications through the one or more delivery networks 660.

Examples of each element within the communication system of FIG. 6 arebroadly described above with respect to FIGS. 1-5. In particular, theclient system 605 and the communications link 615 typically haveattributes comparable to those described with respect to client systems105, 205, 305, 405 and 505 and communications links 115, 215, 315, 415and 515 of FIGS. 1-5. Likewise, the host system 610 of FIG. 6 may haveattributes comparable to and may illustrate one possible embodiment ofthe host systems 110, 210, 310, 410 and 510 shown in FIGS. 1-5. FIG. 6describes several aspects of one implementation of the host system 610in greater detail, focusing primarily on one particular implementationof the login server 670 and IM host complex 690.

The client system 605 includes a client device 620 and a clientcontroller 625. The client controller 625 is generally capable ofestablishing a connection to the host system 610, including the IM hostcomplex 690. In one implementation, the client controller 625 includesan IM application for communicating with servers in the IM host complex690 using exclusive IM protocols.

The host system 610 includes a host device 635 and a host controller640. The host controller 640 is generally capable of transmittinginstructions to any or all of the elements of the host device 635. Forexample, in one implementation, the host controller 640 includes one ormore software applications loaded on one or more elements of the hostdevice 635. In other implementations, as described above, the hostcontroller 640 may include any of several other programs, machines, anddevices operating independently or collectively to control the hostdevice 635.

The host system 610 includes a login server 670 capable of enablingcommunications between client systems 605 and various elements of thehost system 610, including elements such as the IM host complex 690 andthe OSP host complex (580 in FIG. 5); login server 670 is also capableof authorizing access by the client system 605 and those elements. TheIM host complex 690 includes an IM server network 6902, a routinggateway 6906, an alert multiplexor network 6908, and one or more alertgates 6910. The IM server network 6902 may include an interconnectednetwork of IM servers and the alert multiplexor network 6908 may includean interconnected network of alert multiplexors. In the implementationof FIG. 6, the IM server network 6902 and the alert multiplexor network6908 are interconnected by a routing gateway 6906 that serves as acommon hub to reduce the number of connections. Each IM server within IMserver network 6902 can directly or indirectly communicate and exchangeinformation with one or more of the alert multiplexors in the alertmultiplexor network 6908. Each of the alert multiplexors in the alertmultiplexor network 6908 may be connected to several alert gates 6910that receive different types of alerts.

During a session, a subscriber typically will be assigned to one IMserver in the IM server network 6902 and to one alert multiplexor in thealert multiplexor network 6908 based on one or more hashing techniques.In one implementation, for example, each IM server in the IM servernetwork 6902 may be dedicated to serving a particular set of registeredsubscribers. Because all of the IM servers can communicate with eachother, all subscribers can communicate with each other through instantmessaging. However, the IM servers and the alert multiplexors arecapable of storing subscriber information and other electronic contentthat may be accessed by the other IM servers and alert multiplexors.Thus, in another implementation, each alert multiplexor in the alertmultiplexor network 6908 may be dedicated to storing information about aparticular set or subset of alerts. Because all of the alertmultiplexors can communicate with each other, all registered subscriberscan receive all types of alerts. This networking arrangement enables theload to be distributed among the various servers in the IM host complex690 while still enabling a subscriber to communicate, share information,or otherwise interact with other subscribers and servers in the IM hostcomplex 690.

Searching

Referring to FIG. 7, an electronic search is performed according to aprocess 700. The search, which may be a search of the Internet, may beperformed, for example, by the systems described above with respect toFIGS. 1-6. For instance, process 700 may be performed by one or more ofthe pods 4804 of FIG. 4. Additionally or alternatively, process 700 maybe performed by one or more non-podded servers, such as servers 4806 orfarms 4802 of FIG. 4. Process 700 also may be performed by any otherhardware component or software component capable of being programmed toreceive, process, and send instructions in the manner described.

Process 700 generally includes receiving at least one search term (step710). The search term then is compared with a list of recommended sites(step 720), previously performed searches (step 730), a hierarchy ofcategory identifiers and terms related to one or more categories (step740), and an electronic information store that includes contentdisplayed by and/or extracted from different web pages from differentweb sites (step 750) to determine whether matches exist. Next, adetermination is made as to whether a threshold number of matches havebeen identified between the search term and one or more of the list ofrecommended sites, the previously conducted searches, the hierarchy ofcategory identifiers, and the electronic information (step 760). Anelectronic search (e.g., an Internet search using the World Wide Web(WWW)) based on the search term is conducted when less than a thresholdnumber of matches are identified (step 770). Finally, results that arebased on identified matches are displayed (step 780).

Several search terms may be received (step 710) and may be grouped bydefault as a single string, or may be grouped in other ways. The searchterms are typically received from a client system 105, 205, 305, 405,505, or 605, or from one or more components of the client system, asshown and described in FIGS. 1-6. Search terms generally include textdefined by letters and/or numbers. However, search terms also mayinclude other searchable content, such as symbols, other alphanumericcharacters, and geometric constructs (e.g., arcs); Boolean operators(e.g., AND, OR, ADJ, NOT, NEAR) generally used to define relationshipsbetween search terms; parentheses and quotation marks generally used toindicate precision and to group search terms; wild card characters(e.g., ? and *) generally used to represent a portion of a search term;and concept operators (e.g., !) generally used to broaden the searchterm or phrase to a list of related words related to the search term orphrase in order to search using these related words.

The recommended sites to which the search term is compared (step 720)may include web sites that have been specially designated as recommendedsites, web content that is considered proprietary to a web host such asan Internet Server Provider (ISP), or non-proprietary content such ascontent from an Internet site that has been specially designated toprovide content. The recommended sites typically include web siteidentifiers, such as web site titles, descriptions, and addresses. Websites may be designated as recommended sites by a human operator, by aprocess performed by a computer, or otherwise. In any case, criteriaused to designate a web site as a recommended site may include, forexample, the number of times a site is accessed or the web site content.When matches occur between the search term and one or more of therecommended sites, results are displayed (step 780). The displayedresults generally include one or more web site identifiers. An exampleof a displayed result is shown in FIG. 10 b under the heading“Recommended Sites” 1075.

Comparing the search term with previously performed searches todetermine whether matches exist (step 730) may include comparing thesearch term with previously received search terms, such as those storedin an electronic data store (e.g., a memory or a database). The searchterm also may be compared with the results of previously-performedsearches to determine whether matches exist. Based on matches that aredetermined to exist, results are displayed (step 780), as shown forexample under the heading “Related Hot Searches” 1085 in FIG. 10 b. Theresults generally include a list of search terms forpreviously-performed searches that share one or more of the receivedsearch terms. Selecting one of the results by mouse click or otherwisetypically invokes a search process (e.g., process 700) with respect tothe chosen result, but may also or alternatively invoke display of theresults of previously-performed searches that are retrieved from storageor memory.

Category Searching

Comparing the search term with a hierarchy of category identifiersand/or terms related to one or more categories to determine whethermatches exist (step 740) is described in more detail with reference toFIG. 8 a, which shows an exemplary process for performing a categorysearch. In the implementation of FIG. 8 a, process 740 generallyincludes receiving at least one search term (step 810), comparing thesearch term with a hierarchy of category identifiers to determinewhether matches exist (step 820), comparing the search term with termsrelated to one or more categories to determine whether matches exist(step 830), ranking results of the comparisons (step 835), andcommunicating at least a category identifier based on the matches thatare determined to exist within the hierarchy and the terms (step 840).

The search terms received (step 810) generally include the search termsthat were received (step 710) for use in performing an electronicsearch. As such, one or more search terms may be received, and may begrouped together for searching purposes as a single string by default,or may be grouped in other ways.

The hierarchy of category identifiers with which the search terms arecompared (step 820) may include identifiers used to represent categoriesand information relating to those categories. For example, in oneimplementation, the hierarchy of category identifiers may include ahierarchy of category names, where groups of the category names arelinked together in a hierarchical relationship. In this instance, namesin the hierarchy represent categories, the names of which are linkedtogether using sub-categories. The hierarchy of category identifiersalso may include other related information, such as a list of web sitesthat are related to the category by name, description, or otherwise.

Referring to FIG. 8 b, an exemplary screen shot 850 illustrates anexample of a hierarchy of category identifiers 855. In this instance,the hierarchy of category identifiers 855 appears as a linked list ofcategory names that are affiliated with specific categories. Thehierarchical relationship among category identifiers and other relatedinformation typically is ordered with broad category names andinformation followed by more narrow names and information. Other formsand data contents also may be used to express a hierarchy of categoryidentifiers. For instance, the category identifier may additionally oralternatively include other information representing categories therein,such as text, alphanumeric characters, symbols and combinations thereof.In one implementation, some or all of the hierarchy of categoryidentifiers may be arranged by and/or received from a third partylisting service (e.g., Open Directory Project).

In comparing the search terms (step 820), matches are typicallydetermined to exist when a received search term matches one or more ofthe identifiers within the hierarchy of category identifiers. Whenseveral received search terms are grouped as a single string forsearching purposes, the comparison includes comparing the single stringof search terms with the hierarchy of category identifiers to determinewhether matching strings exist.

Comparing the search term with terms related to one or more categoriesto determine whether matches exist (step 830) may include usinginformation related to categories, such as a name of a web sitecorresponding to a category, a description of the web site, or otherrelated terms. When several search terms are received and grouped as asingle string, the comparison (step 830) may include comparing thesingle string of search terms with the terms related to one or morecategories to determine whether matches exist. To improve searchabilityof terms provided by third party listing services (e.g., Open DirectoryProject), the comparison may include converting received or relatedterms to a predesignated searchable format, e.g., by indexing andcataloguing the terms.

Ranking the results (step 835) generally includes ranking the results ofcomparisons performed in either, both, or the combination of steps 820and 830. The category identifiers may be ranked based on at least one ofa number of matches that are determined to exist, the relative locationsof matches, and the relative types of matches. For instance, thepotential relevance of a matching category is generally deemed toincrease as the number of identified matches increase. Furthermore, thepotential relevance, and hence the rank, of a matching category isdeemed to change based on the existence and frequency of matches thatoccur within different types of information, such as the hierarchy ofcategory identifiers (step 820) and the terms related to one or morecategories (step 830). For instance, the results may be ranked based onthe existence and number of matches between a search term and thehierarchy of category identifiers, or within the terms related to one ormore categories.

Ranking of matching categories and corresponding category identifiersalso may be based on the relative location of the matches within thehierarchy of category identifiers. For example, a match occurring in acategory identifier that represents a narrow category may be rankedhigher than a match occurring within a category identifier thatrepresents a broader category, or vice versa. Further, categoryidentifiers that include matches occurring within the hierarchy ofcategory identifiers are generally ranked higher than categoryidentifiers that include matches that occur within the terms related toone or more categories. Ranking the category identifiers based on thetype of the match also may include ranking the category identifiersbased on whether the matches occur within at least one of the termsrelated to one or more categories and the hierarchy of categoryidentifiers. When category identifiers include matches occurring withinmore than one type, those identifiers are ranked higher than categoryidentifiers that contain matches occurring within only one of the types.For example, a category having matches occurring within both thehierarchy of category identifiers and the terms related to one or morecategories is typically ranked higher than a category that includesmatches occurring within only one of the hierarchy of categoryidentifiers and the terms related to one or more categories.

Communicating at least a category identifier (step 840) generallyincludes communicating information revealing matches that are determinedto exist within the hierarchy and the related terms. The resultscommunicated generally include at least a category identifier, and areprovided for use in a displaying process, such as display step 780 ofFIG. 7, for eventual display to a user of a client system.

Referring to FIG. 8 b, an example of results communicated (step 840) isdisplayed under the heading, “Matching Categories.” The matchingcategories of FIG. 8 b include several hierarchies of categoryidentifiers, with each hierarchy of category identifiers being ranked interms of relevance to the proffered search term. The hierarchy ofcategory identifiers shown by FIG. 8 b is a listing of categoryidentifiers. The listing starts with an identifier 8551 for a broadcategory and descends to an identifier for a more narrow category, withthe last category identifier 8552 being the final matching categoryname. A hierarchy that includes a match within the final category nameis generally ranked higher (step 830) than a hierarchy that includes amatch within a category name other than the final category name withinthe hierarchy of category identifiers. In one implementation, selectingone of the categories using a mouse or otherwise will reveal anotherscreen shot 860, as shown, e.g., in FIG. 8 c. Each category may includea listing of sub-categories 865 and web sites 875 within thosecategories. For instance, the listing for a web site within a categorymay include the title of the web site, a description of the web site,and an address for the web site.

Matching Sites Search

Referring to FIG. 9 a, another aspect 750 of the search process 700shown by FIG. 7 is described for performing a search to identify websites that relate to a search term. In this search process 750, thesearch term is compared against text or other searchable contentdisplayed or extracted from the actual web site(s). Process 750 of FIGS.7 and 9 a generally includes receiving at least one search term (step910), comparing the search term with electronic information within atleast one electronic information store to determine whether matchesexist (step 920), ranking results of the comparison (step 925), andcommunicating results based on the matches that are determined to exist(step 930).

The search terms received (step 910) generally include the search termsthat were received (step 710) for use in performing an electronicsearch. As such, one or more search terms may be received, and may begrouped together for searching purposes as a single string by default,or may be grouped in other ways.

The received search terms may be compared (step 920) to electronicinformation within at least one electronic information store todetermine whether matches exist. The electronic information may include,for example, text or other searchable content displayed by and/orextracted from web pages from different web sites. When several searchterms are received, the comparison (step 920) may include comparing thesingle string of search terms with the electronic information within theelectronic information store to determine whether matches exist. Theelectronic information may include partial or full text displayed bydifferent web pages from different web sites (e.g., an introductory orhome page), titles, descriptions, and addresses of web sites.

Ranking the results (step 925) generally includes ranking search resultsbased on an algorithm that takes into account various aspects of theresults achieved. For example, the identifiers for the several web sitesmay be ranked based on a number of the matches that are determined toexist between the search term and the electronic informationcorresponding to the web sites. Ranking the identifiers for the severalweb sites also may be based on whether matches occur within one or moreof the text, the title, the description, and the addresses of the website. For instance, identifiers with more than one of the title,description, text, and web address that match a search term aregenerally ranked higher than identifiers with only one of the title,description, text, and web address that match the same search term.

In addition, the ranking also may be based on which of these forms ofelectronic information are matched and where the matches occur. Forexample, identifiers with titles that match a search term may be rankedhigher than identifiers with descriptions that match the same searchterm, which may be ranked higher than identifiers with web addressesthat match the same search term, which may be ranked higher thanidentifiers with text that matches the same search term.

Communicating results (step 930) may be based on matches that aredetermined to exist from the comparison (step 920). For instance, thesearch results communicated (step 930) may be provided for use in adisplaying process, such as displaying step 780 of FIG. 7, for eventualdisplay to a user of, e.g., a client system. The results communicatedtypically include an identifier for each matching web site, such as atitle, a description, address information, text, characters, symbols, orcombinations thereof used to identify or describe a web site. Forexample, FIG. 9 e shows an exemplary display 990 of identifiers 932.

Filtering Search Results

Referring also to FIG. 9 b, comparing the search term with electronicinformation within at least an electronic information store (step 920)may include classifying the search term among at least first and secondcategories (step 922), comparing the search term to first electronicinformation within a first electronic information store to determinewhether matches exist when the search term is classified within thefirst category (step 924), and comparing the search term to at leastsecond electronic information within at least a second electronicinformation store to determine whether matches exist when the searchterm is classified within the second category (step 926). As shown inFIG. 9 a, the process 920 of comparing shown by FIG. 9 b may be precededby receiving at least one search term (step 910 of FIG. 9 a) andfollowed by ranking and communicating a result based on the matches thatare determined to exist (steps 925 and 930 of FIG. 9 a). A more detaileddescription for steps 910, 925, and 930 is provided above with referenceto FIG. 9 a; a more detailed description of steps 922, 924, and 926 isprovided below.

Classifying the search term (step 922) generally includes classifyingthe received search term among one or more categories, with a firstcategory and a second category being described and shown forillustrative purposes. If several search terms are grouped as a singlestring, the search terms may be collectively classified as a singlestring based on the grouping of the search terms, or they may beclassified individually based on each individual search term.

Comparing the search terms (step 924) generally includes comparing thesearch term to first electronic information within a first electronicinformation store when the search term is classified within the firstcategory. By contrast, comparing the search term (step 926) generallyincludes comparing the search term to the second electronic informationwithin the second electronic information store to determine whethermatches exist when the search term is classified within the secondcategory. However, comparing the search term (step 926) may also includecomparing the search term to the first electronic information within thefirst information store such that matching results from both electronicinformation stores may result from the comparison (step 926). In thisinstance, search terms are compared to a first set of data (step 924),and compared to a second set of data that includes the first set of dataand other data (step 926).

Referring to FIG. 9 c, a system that searches and stores searchablecontent includes first and second electronic information stores 992 and994 which store electronic information received or derived fromdifferent sources which may have different classifications. The systemmay further include additional electronic information stores asillustrated by item 996, and generally may include a search engine 998for comparing received search terms with the content within either orboth information stores to determine whether matches exist.

The first electronic information store 992 and the second electronicinformation store 994 may be a part of a single storage device orseveral separate storage devices, examples of which include a magneticdisk (e.g., an internal hard disk and removable disk); a magneto-opticalor optical disk; and a CD-ROM. The first electronic information store992 and the second electronic information store 994 also oralternatively may be a part of a single volatile or non-volatile memorydevice or several separate non-volatile memory devices, examples ofwhich include semiconductor memory devices such as RAM, ROM, PROM,EPROM, EEPROM, and flash memory devices. When stored on separatedevices, the first electronic information store may be located on afirst server and the second electronic information device may be locatedon a second server that differs from the first server.

The first and second electronic information stores 992 and 994 each mayinclude partial or full text or other searchable content displayed byone or more different web pages from one or more different web sites,and may include identifiers for those web sites, such as titles,descriptions, and addresses. The first and second electronic informationstores 992 and 994 are typically populated by automatically scanning andstoring the text and/or other searchable content of a web site that hasbeen accessed a threshold number of times by members of a web host asdescribed with respect to steps 940, 945, and 950 of FIG. 9 d, or thathas been identified by a listing service (but not accessed the thresholdnumber of times by members of the web host) as described with respect tosteps 960, 970, and 980 of FIG. 9 d. However, either of stores 992 and994 may be populated in other ways. In either case, the first and secondelectronic information stores 992 and 994 store searchable contentcorresponding to the contents scanned from web pages, whether identifiedthrough access activities, list service identification, or in otherways.

Each electronic information store may contain content that has beenclassified and stored based on a specified type or types ofclassification criteria. For instance, the first electronic informationstore 992 may include content classified as non-offensive and the secondelectronic information store 994 may include content classified asoffensive. Other types of content classification criteria may beimplemented in addition to or separate from criteria based on offensiveand non-offensive classifications. Other criteria that may be used, forexample, include medical and non-medical, legal and non-legal, andsports and non-sports.

In one implementation, the first electronic information includescontents relating to non-offensive web sites, and the second electronicinformation includes contents relating to offensive web sites. Exampleof non-offensive web sites may include web sites that do not includepornographic, violent, racist, or hate-related content. By contrast,examples of offensive web sites may include web sites that includepornographic, violent, racist, or hate-related content.

The following describes an example applying the described search methodsof FIG. 9 b to this implementation. A user of a client system enters asearch term (step 910). The search term is classified as either beingoffensive or non-offensive (step 922). If the term is classified asbeing non-offensive, then only the contents of the first electronicinformation store are searched (step 924) and results from the searchare communicated for display to the user (step 930). In this example,the first electronic information store only contains contents thatpreviously have been classified as non-offensive. If the search termentered by the user is classified as being offensive, the contents ofeither the second electronic information store or both the first andsecond electronic information stores are searched (step 926) and theresults are communicated for display to the user (step 930).

The described filtering of results between offensive content andnon-offensive content based on the classification of the search term mayallow a web host to implement a parental type of control in determiningwhat search results are displayed to the user. Because the offensive andnon-offensive contents are stored in different electronic informationstores, the ability to restrict access is enhanced. For instance,parental control can be exercised by blocking the access of a user toone or more electronic information stores. Other forms of data filteringalso are enabled through this process and related techniques.

Referring to FIG. 9 d, the electronic information within the electronicinformation store may be populated by various methods. For instance,process 750 of FIGS. 7 and 9 a also may include identifying web sitesand/or web pages accessed by members of a web host (step 940),automatically scanning the text of a web site when the web site isaccessed by a member of a web host (step 945), storing text or othersearchable content from within the web site that was automaticallyscanned for comparison against search terms that were received (step950), identifying web sites provided by a listing service (step 960),determining whether text or other searchable content for web sitesidentified by the listing service were stored previously (step 970), andautomatically scanning and storing text or other searchable content fromwithin web sites that were determined not to be stored previously (step980). The relative order of steps within FIGS. 9 a and 9 d should not beconstrued to imply order among the steps described by those respectivefigures.

The access activity of members of a web host may be monitored to enableweb sites that have been accessed to be identified for scanning andstorage in preparation for future electronic searches (step 940).

Automatically scanning (step 945) typically includes automaticallyscanning the text of a web site when the web site is accessed by amember or a configurable threshold number of members of the web host.Automatically scanning also may include scanning the full text of theweb site, scanning text included on an introductory page, and scanningfull text included on an introductory page. Scanning generally includescharacter or image recognition techniques, but may include other methodsof capturing and conversion of information displayed by accessed webpages or web sites to searchable form.

Storing text (step 950) generally includes storing the text or othersearchable content of the web site that was automatically scanned forfuture comparison against search terms. The text may be stored in anelectronic information store such as those described above, which may beembodied, for example, by cache memory.

In one implementation, prior to scanning (step 945) and storing (step950), populating the electronic information store may further includeidentifying the web site being accessed by a member of the web host(step 940) and determining whether the text of the web site waspreviously stored. In this implementation, automatically scanning andstoring will occur when the text of the web site is determined not tohave been previously stored. Otherwise, the scanning and storing may beskipped.

Determining whether the text of the web site has been stored may beaccomplished using various methods. For example, determining whether thetext of the web site has been stored may be based on a web site addressthat corresponds to the web site being accessed by the member of the webhost. Additionally or alternatively, determining whether the text hasbeen stored may be based on the text of the web page or on the web siteitself.

Another method for populating the electronic information within theelectronic information store includes identifying web sites provided bya listing service (step 960), determining whether the text of the websites provided by the listing service were scanned and stored previously(step 970), and automatically scanning and storing the text of the websites determined not to be stored previously (step 980).

Identifying web sites provided by a listing service (step 960) may occuron a periodic basis (e.g., daily, weekly, monthly), based on atriggering event (e.g., receipt of listing service information), orotherwise. The listing service generally includes a third party servicesuch as that provided by the Open Directory Project (ODP).

Determining whether web site content has been previously scanned andstored (step 970) may include searching memory or storage contents forcontent or identifiers corresponding to the web page or web host, eitherthrough a search of a table of contents for the memory or storage, orthrough a search of the memory or storage itself.

Automatically scanning and storing (step 980) also may includeautomatically scanning and storing the full text of web sites providedby the listing service.

The process for searching different data stores may further includeautomatically scanning contents of a web site when the web site isaccessed by a member of a web host, classifying the contents of the website among at least one of the first electronic information within thefirst electronic information store and the second electronic informationwithin the second electronic information store, storing the contents ofthe web site as part of the first electronic information when thecontents are classified among the first electronic information andstoring the contents as part of the second electronic information whenthe contents of the web site are classified among the second electronicinformation.

Displaying Web Site Search Results

Referring to FIG. 10 a, a process 780 for displaying web site searchresults generally includes receiving at least one search term (step710). The search term is compared with first electronic informationwithin a first electronic information store including content providedby an internal source to determine whether matches exist (step 1020).The search term also is compared with second electronic informationwithin a second electronic information store including content providedby an external source to determine whether matches exist (step 1030).Results based on the matches that are determined to exist with the firstelectronic information and the second electronic information aredisplayed, with the results combined in a single list of resultsincluding the matches that are determined to exist with the firstelectronic information and the second electronic information (step1040).

Typically, at least one search term is received (step 710). However,several search terms may be received and may be grouped by default as asingle string, or may be grouped in other ways. The search terms may bereceived from any type of source (e.g., a user of a client system, asearch engine, a component of a process for searching the Internet).

Comparing with first electronic information (step 1020) typicallyincludes comparing the search term to first electronic informationwithin a first electronic information store to determine whether matchesexist. The first electronic information may include content providedand/or maintained by a web searching host, and content for which accessis provided only to selected members by the web searching host. The websearching host may be an Internet service provider or some other contentmaintaining and providing service. The content may include content thatis proprietary to the web searching host and content that is proprietaryto another entity, but that is made accessible only to members of theweb searching host.

Comparing with second electronic information (step 1030) typicallyincludes comparing the search term to second electronic informationwithin a second electronic information store to determine whethermatches exist. The second electronic information may include contentprovided and/or maintained by a source external to the web searchinghost. One example of second electronic information includes content thatis available to both members and non-members of a web searching host,such as content available to any member of the public on the World WideWeb. The content may include content that is non-proprietary to the webhost as well as content that is proprietary to another entity, but thatis available to others as well as to members of the web host.

For instance, steps 1020 and 1030 may correspond to searching processesdescribed with respect to one or more of steps 720, 730, 740, and 750,where the web searching host searches its own content as well asexternally provided and maintained content for matches with any or allof recommended sites, previously performed searches, categoryidentifiers, and electronic information such as text from the web pages.An example of a web searching host includes America Online (AOL), whichmaintains web-accessible contents and which enables searching of thoseweb-accessible contents and other non-AOL maintained contents, withdisplay of amalgamated search results.

Results may be displayed (step 1040) based on the matches that aredetermined to exist with the first electronic information and the secondelectronic information. The results may be combined in a single list ofresults. Displaying (step 1040) may include displaying results such thatthe source of the results obtained from the external source or the websearching host is transparent to a user viewing the single list ofresults. Furthermore, the single list of results may be displayed in aranked list of results. The ranking may be in descending order ofrelevance from results that are most relevant to the received searchterm to results that are least relevant to the received search term.Each result may be assigned a relevance weighting based on the numerousfactors that may be considered by a ranking algorithm. Some of thefactors used by the ranking algorithm may include the number of sharedwords between the search term and the results, and the identification ofthe component of a single result (e.g., title of the web site,description of the web site, address of the web site, text of the website) in which the shared terms occur. Additionally or alternatively,the results may be ranked according to whether the match occurs betweenthe search term and the internal source or between the search term andthe external source.

For example, as shown in FIG. 9 e under “Matching Sites”, a singleranked list of results is displayed so that the source of any one listedresult is transparent to a viewer of the results. Similarly, as shown inFIG. 10 c under “Matching Web Pages”, a single ranked list of results isdisplayed so that the source of any one listed result is transparent toa viewer of the results. A viewer of the results is unaware of theproprietary or non-proprietary nature of any of the results.

In one implementation, a process for displaying web site search resultsthat are produced from searching multiple electronic information storesgenerally includes sending the search term to a third party searchservice for use in comparing the search term to at least secondelectronic information within a second electronic information store,receiving the results from the third party search service, combining thefirst results and the second results, and displaying the combined firstresults and second results as a single list of results, with the resultsincluding at least one web site identifier.

In this implementation, the first electronic information may includeproprietary information and the second electronic information mayinclude electronic information that is non-proprietary to a provider ofthe first electronic information. The second electronic information maybe maintained by a third party search service and may includeinformation that is proprietary to the third party search service. Thefirst electronic information within the first electronic informationstore may be maintained by an Internet service provider.

In addition, the systems, methods, and techniques described here may beimplemented in digital electronic circuitry, or in computer hardware,firmware, software, or in combinations of them. Apparatus embodyingthese techniques may include appropriate input and output components, acomputer processor, and a computer program product tangibly embodied ina machine-readable storage component for execution by a programmableprocessor. A process embodying these techniques may be performed by aprogrammable processor executing a program of instructions to performdesired functions by operating on input data and generating appropriateoutput. The techniques may advantageously be implemented in one or morecomputer programs that are executable on a programmable system includingat least one programmable processor coupled to receive data andinstructions from, and to transmit data and instructions to, a datastorage system, at least one input component, and at least one outputcomponent. Each computer program may be implemented in a high-levelprocedural or object-oriented programming language, or in assembly ormachine language if desired; and in any case, the language may be acompiled or interpreted language. Suitable processors include, by way ofexample, both general and special purpose microprocessors. Generally, aprocessor will receive instructions and data from a read-only memoryand/or a random access memory. Storage components suitable for tangiblyembodying computer program instructions and data include all forms ofnon-volatile memory, including by way of example semiconductor memorycomponents, such as Erasable Programmable Read-Only Memory (EPROM),Electrically Erasable Programmable Read-Only Memory (EEPROM), and flashmemory components; magnetic disks such as internal hard disks andremovable disks; magneto-optical disks; and Compact Disc Read-OnlyMemory (CD-ROM disks). Any of the foregoing may be supplemented by, orincorporated in, specially-designed ASICs (application-specificintegrated circuits).

Accordingly, other embodiments are within the scope of the followingclaims.

1. A computer-implemented method of performing a search, the methodcomprising: receiving, from a user, at least one query term; in responseto receiving the at least one query term, accessing, from electronicstorage, potentially related query terms; comparing the at least onequery term with the accessed potentially related query terms; based oncomparison results, identifying a list of related query terms that arerelated to the at least one query term, each entry in the list ofrelated query terms including one or more query terms that match atleast one query term from the at least one query term; presenting,responsive to receipt of the at least one query term and prior topresenting results from any search process to identify search resultsother than the list of related query terms identified based on thecomparison results, the list of related query terms with a userselectable control element corresponding to each entry in the list ofrelated query terms; receiving a selection of a particular userselectable control element that corresponds to a particular entry in thelist of related query terms; and in response to receiving the selectionof the particular user selectable control element: identifying theparticular entry, in the list of related query terms, corresponding tothe particular user selectable control element; accessing one or morequery terms included in the particular entry; generating a list searchresults corresponding to the accessed one or more query terms includedin the particular entry by performing a search process, using theaccessed one or more query terms included in the particular entry, toidentify electronic network-based search results; and presenting thelist of search results.
 2. The method of claim 1 wherein presenting thelist of related query terms with a user selectable control elementcorresponding to each entry in the list of related query terms includespresenting query terms included in the list of query terms as userselectable control elements.
 3. The method of claim 1 wherein presentingthe list of related query terms with a user selectable control elementcorresponding to each entry in the list of related query terms includespresenting at least one query term included in each entry in the list ofrelated query terms as the user selectable control element correspondingto the entry.
 4. The method of claim 1 wherein identifying the list ofrelated query terms that are related to the at least one query termcomprises identifying a list of related query terms that are related tothe at least one query term and that have been included a relativelyhigh number of searches previously performed within a threshold periodof time prior to receiving the at least one query term.
 5. The method ofclaim 1 wherein generating a list search results corresponding to theone or more query terms that are related to the at least one query termand included in the particular entry includes accessing, from electronicstorage, search results corresponding to the one or more query termsthat are related to the at least one query term and included in theparticular entry.
 6. The method of claim 1 wherein accessing, fromelectronic storage, potentially related query terms includes accessing,from electronic storage, previously received query terms associated withpreviously performed searches.
 7. The method of claim 1 whereinpresenting the list of related query terms with a user selectablecontrol element corresponding to each entry in the list of related queryterms includes presenting the list of related query terms with a userselectable control element corresponding to each entry in the list ofrelated query terms concurrently with an advertisement.
 8. The method ofclaim 1 wherein presenting the list of related query terms with a userselectable control element corresponding to each entry in the list ofrelated query terms includes presenting the list of related query termswith a user selectable control element corresponding to each entry inthe list of related query terms concurrently with an interface controlconfigured to enable a user to enter query terms.
 9. The method of claim1 further comprising: accessing, from electronic storage, informationrelated to recommend sites; comparing the at least one query term withthe accessed information related to recommend sites; based on comparisonresults, determining a list of recommended sites that correspond to theat least one query term; and presenting the list of recommended sites.10. The method of claim 9 wherein presenting the list of recommendedsites includes presenting the list of recommended sites concurrentlywith the list of related query terms.
 11. The method of claim 1 furthercomprising: accessing, from electronic storage, category identifiersassociated with a hierarchy of categories; comparing the at least onequery term with the accessed category identifiers associated with thehierarchy of categories; based on comparison results, determining one ormore categories that correspond to the at least one query term; andpresenting category information related to the one or more categoriesthat correspond to the at least one query term.
 12. The method of claim11 wherein presenting category information related to the list ofcategories that correspond to the at least one query term includespresenting category information related to the list of categories thatcorrespond to the at least one query term concurrently with the list ofrelated query terms.
 13. The method of claim 1 wherein: identifying alist of related query terms that are related to the at least one queryterm includes identifying a list of related query terms that are sharedby the at least one query term; and presenting the list of related queryterms includes presenting the list of related query terms that areshared by the at least one query term.
 14. The method of claim 1 whereinpresenting, responsive to receipt of the at least one query term andprior to presenting results from any search process to identify searchresults other than the list of related query terms identified based onthe comparison results, the list of related query terms with a userselectable control element corresponding to each entry in the list ofrelated query terms comprises presenting, at least initially, only thelist of related query terms.
 15. The method of claim 1 whereinpresenting, responsive to receipt of the at least one query term andprior to presenting results from any search process to identify searchresults other than the list of related query terms identified based onthe comparison results, the list of related query terms with a userselectable control element corresponding to each entry in the list ofrelated query terms comprises presenting the list of related query termswithout first performing a search process to identify electronicnetwork-based search results responsive to receipt of the at least onequery term.
 16. The method of claim 1 wherein presenting, responsive toreceipt of the at least one query term and prior to presenting resultsfrom any search process to identify search results other than the listof related query terms identified based on the comparison results, thelist of related query terms with a user selectable control elementcorresponding to each entry in the list of related query terms isconditioned on a number of entries included in the list of related queryterms being greater than or equal to a threshold.
 17. An electronicsystem including one or more devices that are controlled by butdistinguished from software, the electronic system comprising: at leastone processing device configured to perform operations comprising:receiving, from a user, at least one query term; in response toreceiving the at least one query term, accessing, from electronicstorage, potentially related query terms; comparing the at least onequery term with the accessed potentially related query terms; based oncomparison results, identifying a list of related query terms that arerelated to the at least one query term, each entry in the list ofrelated query terms including one or more query terms that match atleast one query term from the at least one query term; presenting,responsive to receipt of the at least one query term and prior topresenting results from any search process to identify search resultsother than the list of related query terms identified based on thecomparison results, the list of related query terms with a userselectable control element corresponding to each entry in the list ofrelated query terms; receiving a selection of a particular userselectable control element that corresponds to a particular entry in thelist of related query terms; and in response to receiving the selectionof the particular user selectable control element: identifying theparticular entry, in the list of related query terms, corresponding tothe particular user selectable control element; accessing one or morequery terms included in the particular entry; generating a list searchresults corresponding to the accessed one or more query terms includedin the particular entry by performing a search process, using theaccessed one or more query terms included in the particular entry, toidentify electronic network-based search results; and presenting thelist of search results.
 18. At least one computer-readable storagemedium encoded with a computer program, the program comprisinginstructions that when executed by at least one computer cause the atleast one computer to perform operations comprising: receiving, from auser, at least one query term; in response to receiving the at least onequery term, accessing, from electronic storage, potentially relatedquery terms; comparing the at least one query term with the accessedpotentially related query terms; based on comparison results,identifying a list of related query terms that are related to the atleast one query term, each entry in the list of related query termsincluding one or more query terms that match at least one query termfrom the at least one query term; presenting, responsive to receipt ofthe at least one query term and prior to presenting results from anysearch process to identify search results other than the list of relatedquery terms identified based on the comparison results, the list ofrelated query terms with a user selectable control element correspondingto each entry in the list of related query terms; receiving a selectionof a particular user selectable control element that corresponds to aparticular entry in the list of related query terms; and in response toreceiving the selection of the particular user selectable controlelement: identifying the particular entry, in the list of related queryterms, corresponding to the particular user selectable control element;accessing one or more query terms included in the particular entry;generating a list search results corresponding to the accessed one ormore query terms included in the particular entry by performing a searchprocess, using the accessed one or more query terms included in theparticular entry, to identify electronic network-based search results;and presenting the list of search results.
 19. The at least onecomputer-readable storage medium of claim 18 wherein presenting,responsive to receipt of the at least one query term and prior topresenting results from any search process to identify search resultsother than the list of related query terms identified based on thecomparison results, the list of related query terms with a userselectable control element corresponding to each entry in the list ofrelated query terms is conditioned on a number of entries included inthe list of related query terms being greater than or equal to athreshold.
 20. The at least one computer-readable storage medium ofclaim 18 wherein identifying the list of related query terms that arerelated to the at least one query term comprises identifying a list ofrelated query terms that are related to the at least one query term andthat have been included a relatively high number of searches previouslyperformed within a threshold period of time prior to receiving the atleast one query term.